//
//  NSDate+Extension.swift
//  0712-日期转换
//
//  Created by lv on 15/7/12.
//  Copyright © 2015年 lv. All rights reserved.
//

import UIKit

extension NSDate {

    ///  将新浪微博的日期字符串转换成日期格式
    class func sinaDateWithString(string: String) ->NSDate {
        // 初始化转换格式
        let formatter = NSDateFormatter()
        // 设置要转换格式
        formatter.dateFormat = "EEE MMM dd HH:mm:ss zzzz yyyy"
        // 指定区域（在真机上尤为重要）英文 en 中文cn
        formatter.locale = NSLocale(localeIdentifier: "en")
        
        // 过滤掉时区的日期，一旦解析失败 返回当前日期
        return formatter.dateFromString(string) ?? NSDate()
    }
    
    /**
    返回当前日期的描述信息，格式如下：
    刚刚(一分钟内)
    X分钟前(一小时内)
    X小时前(当天)
    昨天 HH:mm(昨天)
    MM-dd HH:mm(一年内)
    yyyy-MM-dd HH:mm(更早期)
    */
    func dateDescription() -> String {
        
        // 取出当前的日历 - 提供了大量的日期计算函数
        let calendar = NSCalendar.currentCalendar()
        
        // 今天
        if calendar.isDateInToday(self) {
           // 计算当前日期和对象日期之间的秒数差值
            let date = Int(NSDate().timeIntervalSinceDate(self))
            if date < 60 {
                return "刚刚"
            }else if date < 3600 {
                return String(date / 60) + "分钟前"
            }else {
                return String(date / 3600) + "小时前"
            }
            
        }
        
        // 日期格式字符串
        var  fmtString = "HH:mm"
        if calendar.isDateInYesterday(self) {
            fmtString = "昨天 " + fmtString
        }else {
            fmtString = "MM-dd " + fmtString
        }
        
        // 计算两个日期之间的实际年度差
        let components = calendar.components(NSCalendarUnit.Year, fromDate: self, toDate: NSDate(), options: NSCalendarOptions(rawValue: 0))
//        print(components)
        
        if components.year != 0 {
            fmtString = "yy-" + fmtString
        }
        
        let formatter = NSDateFormatter()
        formatter.locale = NSLocale(localeIdentifier: "en")
        formatter.dateFormat = fmtString
        
        return formatter.stringFromDate(self)
    }
}
